package ec.edu.ucacue.siop.proceso.iniciar.lectores;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.StringTokenizer;

import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import ec.edu.ucacue.siop.proceso.calculoBorrar.Cont24horas;
import ec.edu.ucacue.siop.proceso.calculoBorrar.ContDatos;


public class LectorExcelHorno {

	private List<Cont24horas> listaVarDiaria = new ArrayList<Cont24horas>();
	String error;

	
	public List<Cont24horas> getListaVarDiaria() {
		return listaVarDiaria;
	}
	public void setListaVarDiaria(List<Cont24horas> listaVarDiaria) {
		this.listaVarDiaria = listaVarDiaria;
	}


	public String getError() {
		return error;
	}

	public void setError(String error) {
		this.error = error;
	}

	public boolean leer(String nomArchivo, int filInicial, int filFinal, String a_o){
		File archivo = new File(nomArchivo);
		System.out.println(nomArchivo);
		try {
			
			Workbook excel = Workbook.getWorkbook(archivo);
			int posFecha = nomArchivo.indexOf(a_o);
			String nomFecha = nomArchivo.substring(posFecha, posFecha+10);
			StringTokenizer tokenFecha = new StringTokenizer(nomFecha,"-");
			int year = Integer.parseInt(tokenFecha.nextToken());
			int mes = Integer.parseInt(tokenFecha.nextToken()) -1;
			int dia = Integer.parseInt(tokenFecha.nextToken());

			// Lectura del horometro			
			Sheet hoja = excel.getSheet("Cons. Comb.");
			
			//horometro harina crudo
			Cont24horas fila0 = leerVertical(hoja, 2, year, mes, dia);
			listaVarDiaria.add(fila0);
			// Masa Harina cruda
			Cont24horas fila1 = leerVertical(hoja, 3, year, mes, dia);
			listaVarDiaria.add(fila1);
			// Horometro combustible
			Cont24horas fila2 = leerVertical(hoja, 1, year, mes, dia);
			listaVarDiaria.add(fila2);
			// Flujo combustible
			Cont24horas fila3 = leerVertical(hoja, 5, year, mes, dia);
			listaVarDiaria.add(fila3);
			// Clinker producido
			Cont24horas fila4 = leerVertical(hoja, 8, year, mes, dia);
			listaVarDiaria.add(fila4);

				
			// Lectura de las variables reporte
			hoja = excel.getSheet("Reporte del Horno");
			for(int j=filInicial; j<filFinal; j++){
				Cont24horas fila = new Cont24horas();
				int hora = 0;
				for(int i=3; i<27; i++) {
					String lectura = hoja.getCell(i, j).getContents();
					hora = i-2;
					ContDatos contedatos = new ContDatos();
					Calendar fecha = Calendar.getInstance();
					fecha.set(year, mes, dia, hora, 0);
					contedatos.setFecha(fecha);
					try{
						lectura = lectura.replace(",", ".");
						contedatos.setValor(Float.parseFloat(lectura));
						fila.getContenido().add(contedatos);
						}
					catch(NumberFormatException ex){
					}
				}
				listaVarDiaria.add(fila);
			}
			
		} catch (BiffException e) {
			error = "error en lectura del archivo " + nomArchivo;
			e.printStackTrace();
			return false;
		} catch (IOException e) {
			error = "error en lectura del archivo " + nomArchivo;
			e.printStackTrace();
			return false;

		}
		
		return true;
		
	}
	private Cont24horas leerVertical(Sheet hoja, int i, int year, int mes, int dia) {
		Cont24horas fila = new Cont24horas();
		int hora = 0;
		for(int j=5; j<29; j++) {
			hora = j-4;
			String lectura = hoja.getCell(i, j).getContents();
			ContDatos contedatos = new ContDatos();
			Calendar fecha = Calendar.getInstance();
			fecha.set(year, mes, dia, hora, 0);
			contedatos.setFecha(fecha);
			try{
				lectura = lectura.replace(",", ".");
				contedatos.setValor(Float.parseFloat(lectura));
				fila.getContenido().add(contedatos);
				}
			catch(NumberFormatException ex){
			}
		}		// TODO Auto-generated method stub
		return fila;
	}
	
}
